/////////////////////////////////////////////////////////////////////////////////
//
//  数组排序
//
/////////////////////////////////////////////////////////////////////////////////
#include<iostream>

int max(int a[], int len);
void swap(int a[], int i, int j);
void show(int a[], int len);

int main()
{
    int a[] = {1,2,3,99,4,5,10,101,98};
    int len = sizeof(a) / sizeof(a[0]);
    show(a, len);

    int pos;
    for (int i = len; i > 0;i--)
    {
        pos = max(a, i);
        swap(a,pos, i-1);
        //std::cout << pos <<std::endl;
        show(a, len);
    }

    return EXIT_SUCCESS;
}

int max(int a[], int len)
{
    int maxid = 0;
    for (int i = 1; i < len;i++)
    {
        if(a[i]>a[maxid])
        {
            maxid = i;
        }    
    }
    return maxid;
}

void swap(int a[], int i, int j)
{
    int tmp = a[i];
    a[i] = a[j];
    a[j] = tmp;
}

void show(int a[], int len)
{
    for (int i = 0; i < len;i++)
    {
        std::cout << a[i]  <<"  ";
    }
    std::cout << std::endl;
}
